<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/memory_hotplug.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/memory_hotplug.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X19MSU5VWF9NRU1PUllfSE9UUExVR19IXzA_"><span class="b">__LINUX_MEMORY_HOTPLUG_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19MSU5VWF9NRU1PUllfSE9UUExVR19IXzA_"><span class="b">__LINUX_MEMORY_HOTPLUG_H</span></a>
<a name="3" /><span class="True">       3:</span> 
<a name="4" /><span class="True">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">mmzone</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="True">       5:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">spinlock</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="6" /><span class="True">       6:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">notifier</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="7" /><span class="True">       7:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">bug</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="8" /><span class="True">       8:</span> 
<a name="9" /><span class="True">       9:</span> <span class="m">struct</span> <span class="b">page</span><span class="f">;</span>
<a name="10" /><span class="True">      10:</span> <span class="m">struct</span> <span class="b">zone</span><span class="f">;</span>
<a name="11" /><span class="True">      11:</span> <span class="m">struct</span> <span class="b">pglist_data</span><span class="f">;</span>
<a name="12" /><span class="True">      12:</span> <span class="m">struct</span> <span class="b">mem_section</span><span class="f">;</span>
<a name="13" /><span class="True">      13:</span> <span class="m">struct</span> <span class="b">memory_block</span><span class="f">;</span>
<a name="14" /><span class="True">      14:</span> 
<a name="15" /><span class="False">      15:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_MEMORY_HOTPLUG</span>
<a name="16" /><span class="False">      16:</span> 
<a name="17" /><span class="False">      17:</span> <span class="k">/*</span>
<a name="18" /><span class="False">      18:</span> <span class="k"> * Types for free bootmem stored in page-&gt;lru.next. These have to be in</span>
<a name="19" /><span class="False">      19:</span> <span class="k"> * some random range in unsigned long space for debugging purposes.</span>
<a name="20" /><span class="False">      20:</span> <span class="k"> */</span>
<a name="21" /><span class="False">      21:</span> <span class="m">enum</span> <span class="f">{</span>
<a name="22" /><span class="False">      22:</span>     <span class="b">MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE</span> <span class="f">=</span> <span class="c">12</span><span class="f">,</span>
<a name="23" /><span class="False">      23:</span>     <span class="b">SECTION_INFO</span> <span class="f">=</span> <span class="b">MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE</span><span class="f">,</span>
<a name="24" /><span class="False">      24:</span>     <span class="b">MIX_SECTION_INFO</span><span class="f">,</span>
<a name="25" /><span class="False">      25:</span>     <span class="b">NODE_INFO</span><span class="f">,</span>
<a name="26" /><span class="False">      26:</span>     <span class="b">MEMORY_HOTPLUG_MAX_BOOTMEM_TYPE</span> <span class="f">=</span> <span class="b">NODE_INFO</span><span class="f">,</span>
<a name="27" /><span class="False">      27:</span> <span class="f">}</span><span class="f">;</span>
<a name="28" /><span class="False">      28:</span> 
<a name="29" /><span class="False">      29:</span> <span class="k">/* Types for control the zone type of onlined memory */</span>
<a name="30" /><span class="False">      30:</span> <span class="m">enum</span> <span class="f">{</span>
<a name="31" /><span class="False">      31:</span>     <span class="b">ONLINE_KEEP</span><span class="f">,</span>
<a name="32" /><span class="False">      32:</span>     <span class="b">ONLINE_KERNEL</span><span class="f">,</span>
<a name="33" /><span class="False">      33:</span>     <span class="b">ONLINE_MOVABLE</span><span class="f">,</span>
<a name="34" /><span class="False">      34:</span> <span class="f">}</span><span class="f">;</span>
<a name="35" /><span class="False">      35:</span> 
<a name="36" /><span class="False">      36:</span> <span class="k">/*</span>
<a name="37" /><span class="False">      37:</span> <span class="k"> * pgdat resizing functions</span>
<a name="38" /><span class="False">      38:</span> <span class="k"> */</span>
<a name="39" /><span class="False">      39:</span> <span class="m">static</span> <span class="m">inline</span>
<a name="40" /><span class="False">      40:</span> <span class="m">void</span> <span class="b">pgdat_resize_lock</span><span class="f">(</span><span class="m">struct</span> <span class="b">pglist_data</span> <span class="f">*</span><span class="b">pgdat</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">flags</span><span class="f">)</span>
<a name="41" /><span class="False">      41:</span> <span class="f">{</span>
<a name="42" /><span class="False">      42:</span>     <a href="cpu.c_macros_ref.html#_c3Bpbl9sb2NrX2lycXNhdmVfMA__"><span class="b">spin_lock_irqsave</span></a><span class="f">(</span><span class="f">&amp;</span><span class="b">pgdat</span><span class="f">-&gt;</span><span class="b">node_size_lock</span><span class="f">,</span> <span class="f">*</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="43" /><span class="False">      43:</span> <span class="f">}</span>
<a name="44" /><span class="False">      44:</span> <span class="m">static</span> <span class="m">inline</span>
<a name="45" /><span class="False">      45:</span> <span class="m">void</span> <span class="b">pgdat_resize_unlock</span><span class="f">(</span><span class="m">struct</span> <span class="b">pglist_data</span> <span class="f">*</span><span class="b">pgdat</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">flags</span><span class="f">)</span>
<a name="46" /><span class="False">      46:</span> <span class="f">{</span>
<a name="47" /><span class="False">      47:</span>     <span class="b">spin_unlock_irqrestore</span><span class="f">(</span><span class="f">&amp;</span><span class="b">pgdat</span><span class="f">-&gt;</span><span class="b">node_size_lock</span><span class="f">,</span> <span class="f">*</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="48" /><span class="False">      48:</span> <span class="f">}</span>
<a name="49" /><span class="False">      49:</span> <span class="m">static</span> <span class="m">inline</span>
<a name="50" /><span class="False">      50:</span> <span class="m">void</span> <span class="b">pgdat_resize_init</span><span class="f">(</span><span class="m">struct</span> <span class="b">pglist_data</span> <span class="f">*</span><span class="b">pgdat</span><span class="f">)</span>
<a name="51" /><span class="False">      51:</span> <span class="f">{</span>
<a name="52" /><span class="False">      52:</span>     <a href="cpu.c_macros_ref.html#_c3Bpbl9sb2NrX2luaXRfMA__"><span class="b">spin_lock_init</span></a><span class="f">(</span><span class="f">&amp;</span><span class="b">pgdat</span><span class="f">-&gt;</span><span class="b">node_size_lock</span><span class="f">)</span><span class="f">;</span>
<a name="53" /><span class="False">      53:</span> <span class="f">}</span>
<a name="54" /><span class="False">      54:</span> <span class="k">/*</span>
<a name="55" /><span class="False">      55:</span> <span class="k"> * Zone resizing functions</span>
<a name="56" /><span class="False">      56:</span> <span class="k"> *</span>
<a name="57" /><span class="False">      57:</span> <span class="k"> * Note: any attempt to resize a zone should has pgdat_resize_lock()</span>
<a name="58" /><span class="False">      58:</span> <span class="k"> * zone_span_writelock() both held. This ensure the size of a zone</span>
<a name="59" /><span class="False">      59:</span> <span class="k"> * can&apos;t be changed while pgdat_resize_lock() held.</span>
<a name="60" /><span class="False">      60:</span> <span class="k"> */</span>
<a name="61" /><span class="False">      61:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="b">zone_span_seqbegin</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">)</span>
<a name="62" /><span class="False">      62:</span> <span class="f">{</span>
<a name="63" /><span class="False">      63:</span>     <span class="m">return</span> <span class="b">read_seqbegin</span><span class="f">(</span><span class="f">&amp;</span><span class="b">zone</span><span class="f">-&gt;</span><span class="b">span_seqlock</span><span class="f">)</span><span class="f">;</span>
<a name="64" /><span class="False">      64:</span> <span class="f">}</span>
<a name="65" /><span class="False">      65:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">zone_span_seqretry</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">,</span> <span class="m">unsigned</span> <span class="b">iv</span><span class="f">)</span>
<a name="66" /><span class="False">      66:</span> <span class="f">{</span>
<a name="67" /><span class="False">      67:</span>     <span class="m">return</span> <span class="b">read_seqretry</span><span class="f">(</span><span class="f">&amp;</span><span class="b">zone</span><span class="f">-&gt;</span><span class="b">span_seqlock</span><span class="f">,</span> <span class="b">iv</span><span class="f">)</span><span class="f">;</span>
<a name="68" /><span class="False">      68:</span> <span class="f">}</span>
<a name="69" /><span class="False">      69:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">zone_span_writelock</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">)</span>
<a name="70" /><span class="False">      70:</span> <span class="f">{</span>
<a name="71" /><span class="False">      71:</span>     <span class="b">write_seqlock</span><span class="f">(</span><span class="f">&amp;</span><span class="b">zone</span><span class="f">-&gt;</span><span class="b">span_seqlock</span><span class="f">)</span><span class="f">;</span>
<a name="72" /><span class="False">      72:</span> <span class="f">}</span>
<a name="73" /><span class="False">      73:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">zone_span_writeunlock</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">)</span>
<a name="74" /><span class="False">      74:</span> <span class="f">{</span>
<a name="75" /><span class="False">      75:</span>     <span class="b">write_sequnlock</span><span class="f">(</span><span class="f">&amp;</span><span class="b">zone</span><span class="f">-&gt;</span><span class="b">span_seqlock</span><span class="f">)</span><span class="f">;</span>
<a name="76" /><span class="False">      76:</span> <span class="f">}</span>
<a name="77" /><span class="False">      77:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">zone_seqlock_init</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">)</span>
<a name="78" /><span class="False">      78:</span> <span class="f">{</span>
<a name="79" /><span class="False">      79:</span>     <a href="cpu.c_macros_noref.html#_c2VxbG9ja19pbml0XzA_"><span class="b">seqlock_init</span></a><span class="f">(</span><span class="f">&amp;</span><span class="b">zone</span><span class="f">-&gt;</span><span class="b">span_seqlock</span><span class="f">)</span><span class="f">;</span>
<a name="80" /><span class="False">      80:</span> <span class="f">}</span>
<a name="81" /><span class="False">      81:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">zone_grow_free_lists</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">new_nr_pages</span><span class="f">)</span><span class="f">;</span>
<a name="82" /><span class="False">      82:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">zone_grow_waitqueues</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">nr_pages</span><span class="f">)</span><span class="f">;</span>
<a name="83" /><span class="False">      83:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">add_one_highpage</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">,</span> <span class="m">int</span> <span class="b">pfn</span><span class="f">,</span> <span class="m">int</span> <span class="b">bad_ppro</span><span class="f">)</span><span class="f">;</span>
<a name="84" /><span class="False">      84:</span> <span class="k">/* VM interface that may be used by firmware interface */</span>
<a name="85" /><span class="False">      85:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">online_pages</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="86" /><span class="False">      86:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__offline_isolated_pages</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">;</span>
<a name="87" /><span class="False">      87:</span> 
<a name="88" /><span class="False">      88:</span> <span class="m">typedef</span> <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">online_page_callback_t</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="89" /><span class="False">      89:</span> 
<a name="90" /><span class="False">      90:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">set_online_page_callback</span><span class="f">(</span><span class="b">online_page_callback_t</span> <span class="b">callback</span><span class="f">)</span><span class="f">;</span>
<a name="91" /><span class="False">      91:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">restore_online_page_callback</span><span class="f">(</span><span class="b">online_page_callback_t</span> <span class="b">callback</span><span class="f">)</span><span class="f">;</span>
<a name="92" /><span class="False">      92:</span> 
<a name="93" /><span class="False">      93:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__online_page_set_limits</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="94" /><span class="False">      94:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__online_page_increment_counters</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="95" /><span class="False">      95:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__online_page_free</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="96" /><span class="False">      96:</span> 
<a name="97" /><span class="False">      97:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">try_online_node</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">)</span><span class="f">;</span>
<a name="98" /><span class="False">      98:</span> 
<a name="99" /><span class="False">      99:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_MEMORY_HOTREMOVE</span>
<a name="100" /><span class="False">     100:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">is_pageblock_removable_nolock</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="101" /><span class="False">     101:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">arch_remove_memory</span><span class="f">(</span><span class="b">u64</span> <span class="b">start</span><span class="f">,</span> <span class="b">u64</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="102" /><span class="False">     102:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__remove_pages</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">start_pfn</span><span class="f">,</span>
<a name="103" /><span class="False">     103:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">nr_pages</span><span class="f">)</span><span class="f">;</span>
<a name="104" /><span class="False">     104:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_MEMORY_HOTREMOVE */</span>
<a name="105" /><span class="False">     105:</span> 
<a name="106" /><span class="False">     106:</span> <span class="k">/* reasonably generic interface to expand the physical pages in a zone  */</span>
<a name="107" /><span class="False">     107:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__add_pages</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">start_pfn</span><span class="f">,</span>
<a name="108" /><span class="False">     108:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">nr_pages</span><span class="f">)</span><span class="f">;</span>
<a name="109" /><span class="False">     109:</span> 
<a name="110" /><span class="False">     110:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX05VTUFfMA__"><span class="b">CONFIG_NUMA</span></a>
<a name="111" /><span class="False">     111:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">memory_add_physaddr_to_nid</span><span class="f">(</span><span class="b">u64</span> <span class="b">start</span><span class="f">)</span><span class="f">;</span>
<a name="112" /><span class="False">     112:</span> <span class="f">#</span><span class="n">else</span>
<a name="113" /><span class="False">     113:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">memory_add_physaddr_to_nid</span><span class="f">(</span><span class="b">u64</span> <span class="b">start</span><span class="f">)</span>
<a name="114" /><span class="False">     114:</span> <span class="f">{</span>
<a name="115" /><span class="False">     115:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="116" /><span class="False">     116:</span> <span class="f">}</span>
<a name="117" /><span class="False">     117:</span> <span class="f">#</span><span class="n">endif</span>
<a name="118" /><span class="False">     118:</span> 
<a name="119" /><span class="False">     119:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_HAVE_ARCH_NODEDATA_EXTENSION</span>
<a name="120" /><span class="False">     120:</span> <span class="k">/*</span>
<a name="121" /><span class="False">     121:</span> <span class="k"> * For supporting node-hotadd, we have to allocate a new pgdat.</span>
<a name="122" /><span class="False">     122:</span> <span class="k"> *</span>
<a name="123" /><span class="False">     123:</span> <span class="k"> * If an arch has generic style NODE_DATA(),</span>
<a name="124" /><span class="False">     124:</span> <span class="k"> * node_data[nid] = kzalloc() works well. But it depends on the architecture.</span>
<a name="125" /><span class="False">     125:</span> <span class="k"> *</span>
<a name="126" /><span class="False">     126:</span> <span class="k"> * In general, generic_alloc_nodedata() is used.</span>
<a name="127" /><span class="False">     127:</span> <span class="k"> * Now, arch_free_nodedata() is just defined for error path of node_hot_add.</span>
<a name="128" /><span class="False">     128:</span> <span class="k"> *</span>
<a name="129" /><span class="False">     129:</span> <span class="k"> */</span>
<a name="130" /><span class="False">     130:</span> <span class="m">extern</span> <span class="b">pg_data_t</span> <span class="f">*</span><span class="b">arch_alloc_nodedata</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">)</span><span class="f">;</span>
<a name="131" /><span class="False">     131:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">arch_free_nodedata</span><span class="f">(</span><span class="b">pg_data_t</span> <span class="f">*</span><span class="b">pgdat</span><span class="f">)</span><span class="f">;</span>
<a name="132" /><span class="False">     132:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">arch_refresh_nodedata</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="b">pg_data_t</span> <span class="f">*</span><span class="b">pgdat</span><span class="f">)</span><span class="f">;</span>
<a name="133" /><span class="False">     133:</span> 
<a name="134" /><span class="False">     134:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* CONFIG_HAVE_ARCH_NODEDATA_EXTENSION */</span>
<a name="135" /><span class="False">     135:</span> 
<a name="136" /><span class="False">     136:</span> <span class="f">#</span><span class="n">define</span> <span class="b">arch_alloc_nodedata</span><span class="f">(</span><span class="b">nid</span><span class="f">)</span>    <span class="b">generic_alloc_nodedata</span><span class="f">(</span><span class="b">nid</span><span class="f">)</span>
<a name="137" /><span class="False">     137:</span> <span class="f">#</span><span class="n">define</span> <span class="b">arch_free_nodedata</span><span class="f">(</span><span class="b">pgdat</span><span class="f">)</span>    <span class="b">generic_free_nodedata</span><span class="f">(</span><span class="b">pgdat</span><span class="f">)</span>
<a name="138" /><span class="False">     138:</span> 
<a name="139" /><span class="False">     139:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX05VTUFfMA__"><span class="b">CONFIG_NUMA</span></a>
<a name="140" /><span class="False">     140:</span> <span class="k">/*</span>
<a name="141" /><span class="False">     141:</span> <span class="k"> * If ARCH_HAS_NODEDATA_EXTENSION=n, this func is used to allocate pgdat.</span>
<a name="142" /><span class="False">     142:</span> <span class="k"> * XXX: kmalloc_node() can&apos;t work well to get new node&apos;s memory at this time.</span>
<a name="143" /><span class="False">     143:</span> <span class="k"> *    Because, pgdat for the new node is not allocated/initialized yet itself.</span>
<a name="144" /><span class="False">     144:</span> <span class="k"> *    To use new node&apos;s memory, more consideration will be necessary.</span>
<a name="145" /><span class="False">     145:</span> <span class="k"> */</span>
<a name="146" /><span class="False">     146:</span> <span class="f">#</span><span class="n">define</span> <span class="b">generic_alloc_nodedata</span><span class="f">(</span><span class="b">nid</span><span class="f">)</span>                \
<a name="147" /><span class="False">     147:</span> <span class="f">(</span><span class="f">{</span>                                \
<a name="148" /><span class="False">     148:</span>     <span class="b">kzalloc</span><span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="b">pg_data_t</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_R0ZQX0tFUk5FTF8w"><span class="b">GFP_KERNEL</span></a><span class="f">)</span><span class="f">;</span>            \
<a name="149" /><span class="False">     149:</span> <span class="f">}</span><span class="f">)</span>
<a name="150" /><span class="False">     150:</span> <span class="k">/*</span>
<a name="151" /><span class="False">     151:</span> <span class="k"> * This definition is just for error path in node hotadd.</span>
<a name="152" /><span class="False">     152:</span> <span class="k"> * For node hotremove, we have to replace this.</span>
<a name="153" /><span class="False">     153:</span> <span class="k"> */</span>
<a name="154" /><span class="False">     154:</span> <span class="f">#</span><span class="n">define</span> <span class="b">generic_free_nodedata</span><span class="f">(</span><span class="b">pgdat</span><span class="f">)</span>    <span class="b">kfree</span><span class="f">(</span><span class="b">pgdat</span><span class="f">)</span>
<a name="155" /><span class="False">     155:</span> 
<a name="156" /><span class="False">     156:</span> <span class="m">extern</span> <span class="b">pg_data_t</span> <span class="f">*</span><span class="b">node_data</span><span class="f">[</span><span class="f">]</span><span class="f">;</span>
<a name="157" /><span class="False">     157:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">arch_refresh_nodedata</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="b">pg_data_t</span> <span class="f">*</span><span class="b">pgdat</span><span class="f">)</span>
<a name="158" /><span class="False">     158:</span> <span class="f">{</span>
<a name="159" /><span class="False">     159:</span>     <span class="b">node_data</span><span class="f">[</span><span class="b">nid</span><span class="f">]</span> <span class="f">=</span> <span class="b">pgdat</span><span class="f">;</span>
<a name="160" /><span class="False">     160:</span> <span class="f">}</span>
<a name="161" /><span class="False">     161:</span> 
<a name="162" /><span class="False">     162:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* !CONFIG_NUMA */</span>
<a name="163" /><span class="False">     163:</span> 
<a name="164" /><span class="False">     164:</span> <span class="k">/* never called */</span>
<a name="165" /><span class="False">     165:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">pg_data_t</span> <span class="f">*</span><span class="b">generic_alloc_nodedata</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">)</span>
<a name="166" /><span class="False">     166:</span> <span class="f">{</span>
<a name="167" /><span class="False">     167:</span>     <a href="cpu.c_macros_ref.html#_QlVHXzA_"><span class="b">BUG</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="168" /><span class="False">     168:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">;</span>
<a name="169" /><span class="False">     169:</span> <span class="f">}</span>
<a name="170" /><span class="False">     170:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">generic_free_nodedata</span><span class="f">(</span><span class="b">pg_data_t</span> <span class="f">*</span><span class="b">pgdat</span><span class="f">)</span>
<a name="171" /><span class="False">     171:</span> <span class="f">{</span>
<a name="172" /><span class="False">     172:</span> <span class="f">}</span>
<a name="173" /><span class="False">     173:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">arch_refresh_nodedata</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="b">pg_data_t</span> <span class="f">*</span><span class="b">pgdat</span><span class="f">)</span>
<a name="174" /><span class="False">     174:</span> <span class="f">{</span>
<a name="175" /><span class="False">     175:</span> <span class="f">}</span>
<a name="176" /><span class="False">     176:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_NUMA */</span>
<a name="177" /><span class="False">     177:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_HAVE_ARCH_NODEDATA_EXTENSION */</span>
<a name="178" /><span class="False">     178:</span> 
<a name="179" /><span class="False">     179:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_HAVE_BOOTMEM_INFO_NODE</span>
<a name="180" /><span class="False">     180:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">register_page_bootmem_info_node</span><span class="f">(</span><span class="m">struct</span> <span class="b">pglist_data</span> <span class="f">*</span><span class="b">pgdat</span><span class="f">)</span><span class="f">;</span>
<a name="181" /><span class="False">     181:</span> <span class="f">#</span><span class="n">else</span>
<a name="182" /><span class="False">     182:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">register_page_bootmem_info_node</span><span class="f">(</span><span class="m">struct</span> <span class="b">pglist_data</span> <span class="f">*</span><span class="b">pgdat</span><span class="f">)</span>
<a name="183" /><span class="False">     183:</span> <span class="f">{</span>
<a name="184" /><span class="False">     184:</span> <span class="f">}</span>
<a name="185" /><span class="False">     185:</span> <span class="f">#</span><span class="n">endif</span>
<a name="186" /><span class="False">     186:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">put_page_bootmem</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="187" /><span class="False">     187:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">get_page_bootmem</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">ingo</span><span class="f">,</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">,</span>
<a name="188" /><span class="False">     188:</span>                  <span class="m">unsigned</span> <span class="m">long</span> <span class="b">type</span><span class="f">)</span><span class="f">;</span>
<a name="189" /><span class="False">     189:</span> 
<a name="190" /><span class="False">     190:</span> <span class="k">/*</span>
<a name="191" /><span class="False">     191:</span> <span class="k"> * Lock for memory hotplug guarantees 1) all callbacks for memory hotplug</span>
<a name="192" /><span class="False">     192:</span> <span class="k"> * notifier will be called under this. 2) offline/online/add/remove memory</span>
<a name="193" /><span class="False">     193:</span> <span class="k"> * will not run simultaneously.</span>
<a name="194" /><span class="False">     194:</span> <span class="k"> */</span>
<a name="195" /><span class="False">     195:</span> 
<a name="196" /><span class="False">     196:</span> <span class="m">void</span> <span class="b">lock_memory_hotplug</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="197" /><span class="False">     197:</span> <span class="m">void</span> <span class="b">unlock_memory_hotplug</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="198" /><span class="False">     198:</span> 
<a name="199" /><span class="True">     199:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* ! CONFIG_MEMORY_HOTPLUG */</span>
<a name="200" /><span class="True">     200:</span> <span class="k">/*</span>
<a name="201" /><span class="True">     201:</span> <span class="k"> * Stub functions for when hotplug is off</span>
<a name="202" /><span class="True">     202:</span> <span class="k"> */</span>
<a name="203" /><span class="True">     203:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">pgdat_resize_lock</span><span class="f">(</span><span class="m">struct</span> <span class="b">pglist_data</span> <span class="f">*</span><span class="b">p</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">f</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="204" /><span class="True">     204:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">pgdat_resize_unlock</span><span class="f">(</span><span class="m">struct</span> <span class="b">pglist_data</span> <span class="f">*</span><span class="b">p</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">f</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="205" /><span class="True">     205:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">pgdat_resize_init</span><span class="f">(</span><span class="m">struct</span> <span class="b">pglist_data</span> <span class="f">*</span><span class="b">pgdat</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="206" /><span class="True">     206:</span> 
<a name="207" /><span class="True">     207:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="b">zone_span_seqbegin</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">)</span>
<a name="208" /><span class="True">     208:</span> <span class="f">{</span>
<a name="209" /><span class="True">     209:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="210" /><span class="True">     210:</span> <span class="f">}</span>
<a name="211" /><span class="True">     211:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">zone_span_seqretry</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">,</span> <span class="m">unsigned</span> <span class="b">iv</span><span class="f">)</span>
<a name="212" /><span class="True">     212:</span> <span class="f">{</span>
<a name="213" /><span class="True">     213:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="214" /><span class="True">     214:</span> <span class="f">}</span>
<a name="215" /><span class="True">     215:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">zone_span_writelock</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="216" /><span class="True">     216:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">zone_span_writeunlock</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="217" /><span class="True">     217:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">zone_seqlock_init</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="218" /><span class="True">     218:</span> 
<a name="219" /><span class="True">     219:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">mhp_notimplemented</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">func</span><span class="f">)</span>
<a name="220" /><span class="True">     220:</span> <span class="f">{</span>
<a name="221" /><span class="True">     221:</span>     <span class="b">printk</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_S0VSTl9XQVJOSU5HXzA_"><span class="b">KERN_WARNING</span></a> <span class="e">&quot;%s() called, with CONFIG_MEMORY_HOTPLUG disabled\n&quot;</span><span class="f">,</span> <span class="b">func</span><span class="f">)</span><span class="f">;</span>
<a name="222" /><span class="True">     222:</span>     <span class="b">dump_stack</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="223" /><span class="True">     223:</span>     <span class="m">return</span> <span class="f">-</span><a href="cpu.c_macros_ref.html#_RU5PU1lTXzA_"><span class="b">ENOSYS</span></a><span class="f">;</span>
<a name="224" /><span class="True">     224:</span> <span class="f">}</span>
<a name="225" /><span class="True">     225:</span> 
<a name="226" /><span class="True">     226:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">register_page_bootmem_info_node</span><span class="f">(</span><span class="m">struct</span> <span class="b">pglist_data</span> <span class="f">*</span><span class="b">pgdat</span><span class="f">)</span>
<a name="227" /><span class="True">     227:</span> <span class="f">{</span>
<a name="228" /><span class="True">     228:</span> <span class="f">}</span>
<a name="229" /><span class="True">     229:</span> 
<a name="230" /><span class="True">     230:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">try_online_node</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">)</span>
<a name="231" /><span class="True">     231:</span> <span class="f">{</span>
<a name="232" /><span class="True">     232:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="233" /><span class="True">     233:</span> <span class="f">}</span>
<a name="234" /><span class="True">     234:</span> 
<a name="235" /><span class="True">     235:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">lock_memory_hotplug</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="236" /><span class="True">     236:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">unlock_memory_hotplug</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="237" /><span class="True">     237:</span> 
<a name="238" /><span class="True">     238:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* ! CONFIG_MEMORY_HOTPLUG */</span>
<a name="239" /><span class="True">     239:</span> 
<a name="240" /><span class="False">     240:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_MEMORY_HOTREMOVE</span>
<a name="241" /><span class="False">     241:</span> 
<a name="242" /><span class="False">     242:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">is_mem_section_removable</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">pfn</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">nr_pages</span><span class="f">)</span><span class="f">;</span>
<a name="243" /><span class="False">     243:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">try_offline_node</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">)</span><span class="f">;</span>
<a name="244" /><span class="False">     244:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">offline_pages</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">start_pfn</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">nr_pages</span><span class="f">)</span><span class="f">;</span>
<a name="245" /><span class="False">     245:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">remove_memory</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="b">u64</span> <span class="b">start</span><span class="f">,</span> <span class="b">u64</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="246" /><span class="False">     246:</span> 
<a name="247" /><span class="True">     247:</span> <span class="f">#</span><span class="n">else</span>
<a name="248" /><span class="True">     248:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">is_mem_section_removable</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">pfn</span><span class="f">,</span>
<a name="249" /><span class="True">     249:</span>                     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">nr_pages</span><span class="f">)</span>
<a name="250" /><span class="True">     250:</span> <span class="f">{</span>
<a name="251" /><span class="True">     251:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="252" /><span class="True">     252:</span> <span class="f">}</span>
<a name="253" /><span class="True">     253:</span> 
<a name="254" /><span class="True">     254:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">try_offline_node</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="255" /><span class="True">     255:</span> 
<a name="256" /><span class="True">     256:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">offline_pages</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">start_pfn</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">nr_pages</span><span class="f">)</span>
<a name="257" /><span class="True">     257:</span> <span class="f">{</span>
<a name="258" /><span class="True">     258:</span>     <span class="m">return</span> <span class="f">-</span><a href="cpu.c_macros_ref.html#_RUlOVkFMXzA_"><span class="b">EINVAL</span></a><span class="f">;</span>
<a name="259" /><span class="True">     259:</span> <span class="f">}</span>
<a name="260" /><span class="True">     260:</span> 
<a name="261" /><span class="True">     261:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">remove_memory</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="b">u64</span> <span class="b">start</span><span class="f">,</span> <span class="b">u64</span> <span class="b">size</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="262" /><span class="True">     262:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_MEMORY_HOTREMOVE */</span>
<a name="263" /><span class="True">     263:</span> 
<a name="264" /><span class="True">     264:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">walk_memory_range</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">start_pfn</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">end_pfn</span><span class="f">,</span>
<a name="265" /><span class="True">     265:</span>         <span class="m">void</span> <span class="f">*</span><span class="b">arg</span><span class="f">,</span> <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">func</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">memory_block</span> <span class="f">*</span><span class="f">,</span> <span class="m">void</span> <span class="f">*</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="266" /><span class="True">     266:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">add_memory</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="b">u64</span> <span class="b">start</span><span class="f">,</span> <span class="b">u64</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="267" /><span class="True">     267:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">arch_add_memory</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="b">u64</span> <span class="b">start</span><span class="f">,</span> <span class="b">u64</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="268" /><span class="True">     268:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">offline_pages</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">start_pfn</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">nr_pages</span><span class="f">)</span><span class="f">;</span>
<a name="269" /><span class="True">     269:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">is_memblock_offlined</span><span class="f">(</span><span class="m">struct</span> <span class="b">memory_block</span> <span class="f">*</span><span class="b">mem</span><span class="f">)</span><span class="f">;</span>
<a name="270" /><span class="True">     270:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">remove_memory</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="b">u64</span> <span class="b">start</span><span class="f">,</span> <span class="b">u64</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="271" /><span class="True">     271:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">sparse_add_one_section</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">start_pfn</span><span class="f">)</span><span class="f">;</span>
<a name="272" /><span class="True">     272:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">sparse_remove_one_section</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">,</span> <span class="m">struct</span> <span class="b">mem_section</span> <span class="f">*</span><span class="b">ms</span><span class="f">)</span><span class="f">;</span>
<a name="273" /><span class="True">     273:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">sparse_decode_mem_map</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">coded_mem_map</span><span class="f">,</span>
<a name="274" /><span class="True">     274:</span>                       <span class="m">unsigned</span> <span class="m">long</span> <span class="b">pnum</span><span class="f">)</span><span class="f">;</span>
<a name="275" /><span class="True">     275:</span> 
<a name="276" /><span class="True">     276:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __LINUX_MEMORY_HOTPLUG_H */</span>
<a name="277" /><span class="True">     277:</span> </pre>
  </body>
</html>
